package com.legendframework.core.dao.wrapper;

import com.legendframework.core.dao.Return;

/**
 * 条件构造器顶层接口
 * @param <T> 实体类泛型
 */
public interface Wrapper<T> {

    /**
     * 预留，获取实体对象 (子类实现)
     *
     * @return 泛型 T
     */
    T getEntity();

    /**
     * 将这个条件对象转为SQL
     * @return
     */
    Return<String,Object[]> toSql();

    /**
     * 将这个条件对象与实体类对象进行匹配
     * @param t 实体类对象
     * @return 校验实体对象是否符合这个条件链
     */
    boolean check(T t);

    /**
     * 将这个条件对象转为表达式文本
     * @return
     */
    String toExpression();
}
